#include<bits/stdc++.h>
using namespace std;
int T,n,m,L,V,d[10001],v[10001],a[10001],p[10001],ans1,ans2,vis[10001][10001],vv[10001],tt,ttt;
bool vvv[10001];
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>T>>n>>m>>L>>V;
    while(T--)
    {
        ans1=0;ans2=0;
        for(int i=1;i<=n;i++)
        {
            vvv[i]=false;
            cin>>d[i]>>v[i]>>a[i];
        }
        for(int i=1;i<=m;i++)
        {
            cin>>p[i];
        }
        for(int i=1;i<=n;i++)
        {
            if(a[i]==0&&v[i]>V)
            {
                ans1++;
                for(int j=1;j<=m;j++)
                {
                    if(p[j]>=d[i]&&p[j]<=p[m])
                    {
                        vis[i][j]=1;
                    }
                }
            }
            if(a[i]>0)
            {
                if(v[i]>V)
                {
                    ans1++;
                    for(int j=1;j<=m;j++)
                    {
                        if(p[j]>=d[i]&&p[j]<=p[m])
                        {
                            vis[i][j]=1;
                        }
                    }
                }
                else if((V*V-v[i]*v[i])/(2*a[i])+d[i]<p[m])
                {
                    ans1++;
                    for(int j=1;j<=m;j++)
                    {
                        if(p[j]>(V*V-v[i]*v[i])/(2*a[i])+d[i]&&p[j]<=p[m])
                        {
                            vis[i][j]=1;
                        }
                    }
                }
            }
            if(a[i]<0)
            {
                if(v[i]>V)
                {
                    int tot=0;
                    for(int j=1;j<=m;j++)
                    {
                        if(p[j]>=d[i]&&p[j]<d[i]+(V*V-v[i]*v[i])/(2*a[i]))
                        {
                            tot=1;
                            vis[i][j]=1;
                        }
                    }
                    ans1+=tot;
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(vis[i][j]==1)
                {
                    vv[j]++;
                }
            }
        }
        sort(vv+1,vv+m+1);
        for(int i=m;i>=1;i--)
        {
            tt=0;
            for(int j=1;j<=n;j++)
            {
                if(vis[j][i]==1&&!vvv[j])
                {
                    tt++;
                    vvv[j]=true;
                }
            }
            if(tt!=0)
            {
                ans2++;
                ttt+=tt;
            }
            if(ttt==n)break;
        }
        cout<<ans1<<" "<<m-ans2<<endl;
    }
    return 0;
}
